
/**
 * 
 * 数字涂色
 * 
 * 题目描述

疫情过后，希望小学终于又重新开学了，三年二班开学第一天的任务是将后面的黑板报重新制作。

黑板上已经写上了N个正整数，同学们需要给这每个数分别上一种颜色。

为了让黑板报既美观又有学习意义，老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。

现在请你帮帮小朋友们，算算最少需要多少种颜色才能给这N个数进行上色。

输入描述
第一行有一个正整数N，其中。

第二行有N个int型数(保证输入数据在[1,100]范围中)，表示黑板上各个正整数的值。

输出描述
输出只有一个整数，为最少需要的颜色种数。

用例
输入	
3
2 4 6
输出	1
说明	所有数都能被2整除
输入	4
2 3 4 9
输出	2
说明	2与4涂一种颜色，4能被2整除；3与9涂另一种颜色，9能被3整除。不能4个数涂同一个颜色，因为3与9不能被2整除。所以最少的颜色是两种。
 * 
 */

import java.util.Arrays;
import java.util.Scanner;

/**
  * 
  题目解析
简单的逻辑题，题目要求：“同种颜色的所有数都可以被这种颜色中最小的那个数整除”。

因此我们可以直接将输入数列进行升序排序，则数列从左到右，元素依次增大，我们每次取最左边的数arr[i]，然后遍历它后面的所有数arr[j]去除它，若可以整除，则为一种颜色，若不可以整除，则为不同颜色。

本题难点主要在于，如何标记一个元素已经涂色了，我这里直接定义了一个长度和输入数列arr相同的数组color，color所有元素默认未初始化，一旦arr[j]可以整除arr[i]，则color[j] = true。

  */
public class 数字涂色 {
    
    public static void main(String[] args) {
        
        try{

            Scanner sc = new Scanner(System.in);
 
            int n = Integer.parseInt(sc.nextLine());
        
            int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        
            System.out.println(getResult(n, arr));

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static int getResult(int n, int[] arr) {
        Arrays.sort(arr);
     
        if (arr[0] == 1) {
          return 1;
        }
     
        boolean[] color = new boolean[n];
        int count = 0;
     
        for (int i = 0; i < n; i++) {
          if (color[i]) continue;
     
          color[i] = true;
          for (int j = i + 1; j < n; j++) {
            if (!color[j] && arr[j] % arr[i] == 0) {
              color[j] = true;
            }
          }
     
          count++;
        }
     
        return count;
      }
}
